//
// Created by disheng on 2020/3/12.
//
extern "C"{
#include "quickjs/quickjs.h"

};
#include "DtfModule.h"
#include <errno.h>
#include <string.h>

#define countof(x) (sizeof(x) / sizeof((x)[0]))

JSValue createError(JSContext *ctx, int err) {
    JSValue obj;

    obj = JS_NewError(ctx);
    JS_DefinePropertyValueStr(ctx, obj, "message",
                              JS_NewString(ctx, strerror(err)),
                              JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
    JS_DefinePropertyValueStr(ctx, obj, "errno",
                              JS_NewInt32(ctx, err),
                              JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);

    return obj;
}



static JSValue js_render(JSContext *ctx, JSValueConst this_val,
                      int argc, JSValueConst *argv) {
    int n, res;
    JSValue uiDsl=argv[0];
    JSValue typeValue=JS_GetProperty(ctx,uiDsl,JS_NewAtom(ctx,"type"));
    JSValueUnion
    const char* type=JS_ToCString(ctx,typeValue);

    return JS_NewInt32(ctx, res);
}

static const JSCFunctionListEntry js_dtf_funcs[] = {
        JS_CFUNC_DEF("render", 1, js_render ),
};

static int js_dtf_init(JSContext *ctx, JSModuleDef *m) {
    return JS_SetModuleExportList(ctx, m, js_dtf_funcs, countof(js_dtf_funcs));
}


JSModuleDef *js_init_module_dtf(JSContext *ctx, const char *module_name)
{
    JSModuleDef *m;
    m = JS_NewCModule(ctx, module_name, js_dtf_init);
    if (!m)
        return NULL;
    JS_AddModuleExportList(ctx, m, js_dtf_funcs, countof(js_dtf_funcs));
    return m;
}